Fisica Computacional

Listas de Exercícios

As listas deverão ser entregues em papel e por email, compactadas no formato tar.gz e com o nome listaN_seunome.tar.gz

Lista 1) Exercicios de revisão de programação - 19/08/2010

  1. Somas não são comutativas no computador! Calcule as somas Graph e Graph com i sendo uma variável ponto flutuante de precisão simples e coloque em um mesmo gráfico as diferencas Graph vs N e Graph vs N para Graph onde Graph.
  2. Escrever um programa que recebe como entrada um número inteiro em representação decimal e retorna sua expansão binária. Para tal, crie uma função que verifica se o i-ésimo bit de uma palavra (variável do programa) vale zero ou um.
  3. Considere um número de ponto flutuante de N bits com E bits reservados para o expoente e M=N-E-1 para a mantissa. Represente TODOS os números obtidos nesta representação em um grafico de barras no gnuplot. Para cada número x, armazene um par (x,1) e plote o arquivo de dados com with impulses. Reveja aqui a definição de números de ponto flutuante.
  4. Imagine o empilhamento de dominós de massa unitária e comprimento 2. O primeiro dominó se encontra com o centro de massa na origem, e a cada passo n deslocamos os dominós ja empilhados de Graph para a direita e adicionamos outro dominó na parte inferior da pilha, também com seu centro de massa na origem. Escreva um programa que diz, para um dado Graph, quantos dominós podem ser empilhados até que o centro de massa ultrapasse a largura do primeiro dominó e a pilha tombe. (Veja uma discussão do problema aqui).

A partir deste exercício todos os cálculos envolvendo reais devem ser feito em ponto flutuante com precisão dupla

Lista 2) Derivada numérica e integração de equações diferenciais ordinárias

O método de Euler - 31/08/2010

Sendo a derivada de uma função Graph definida por Graph e Graph, o método de Euler (com difereças posteriores) corresponde ao truncamento desta expansão em ordem h. Obtemos assim que a derivada no ponto x é aproximada por Graph.

  1. Mostre que o método de Euler com diferenças centradas é exato em Graph, onde h é o passo de discretização da derivada. Nesse método escrevemos Graph
  2. Calcule a derivada numérica de Graph no ponto x=3 usando o método de Euler simples com passo de discretização entre Graph e Graph e faça um gráfico mostrando a diferença relativa entre a derivada numérica e o valor exato da derivada para ponto flutuante com precisão simples e dupla. Entre quais valores de h a aproximação é aceitável? (Solução aqui)
  3. Mostre que o método de Euler é instável para qualquer passo h na solução do problema de crescimento exponencial Graph
  4. Integre a equação diferencial Graph com Graph com o método de Euler simples para diferentes valores de passo h=0.1, h = 0.05, h = 0.01, h = 0.005 e h = 0.001 e compare cada solução em t=1,2,3,4 e 5 com a solução exata Graph. Voce pode encontrar essa solução exata digitando a equação diferencial no site do WolframAlpha
  5. Faça um gráfico com a solução para h=0.05 entre t=0 e t=5 e a solução exata.
  6. Resolva o problema acima com o método de Euler com diferenças centradas e os mesmos valores de h. Para obter o primeiro passo use o método de Euler simples com passo de discretização dez vezes menor que o usado no resto do intervalo.
Integração numérica de equações diferenciais ordinárias de sistemas conservativos: métodos simpléticos - 01/09/2010

A aproximação para a derivada, como sugerida no método de Euler, introduz erros sistemáticos que acarretam na destruição de certos invariantes da dinâmica original, como a energia total no movimento do pêndulo simples. Para reduzir os efeitos da aproximação numérica à derivada, pode-se recorrer a métodos com aproximações de ordem superior (o método de Euler é de primeira ordem no passo de discretização h).

Métodos de Runge-Kutta

Ver: http://mathworld.wolfram.com/Runge-KuttaMethod.html
Atenção
Para sistemas de equações diferenciais, ver: http://www.nsc.liu.se/~boein/f77to90/rk.html

  1. Resolva numericamente o problema do pêndulo físico utilizando o método de Runge-Kutta de quarta ordem com passo Graph e ilustre o espaço de fase do sistema. Considere Graph metros, onde é o comprimento da haste de massa desprezível à qual se prende uma massa m. Use a condição inicial Graph (posição vertical para baixo) e velocidades iniciais Graph e Graph, onde Graph é a velocidade crítica que separa os movimentos de oscilação e rotação (Ver o artigo "Comportamento crítico no pêndulo simples" do Paulo Murilo para um estudo desta transição). Considere a evolução por dois períodos do movimento. Ilustre, no mesmo gráfico, a solução do problema na aproximação de pequenos ângulos com Graph e Graph.
  2. Faça um gráfico contendo os primeiros 30 segundos da evolução temporal dos valores analítico e numérico da energia total do pêndulo. No caso numérico, utilize o método de Euler e o método de Runge-Kutta de segunda e quarta ordem com passos Graph e Graph.
Métodos simpléticos

Ver Reversible multiple time scale molecular dynamics (pdf aqui)

Estes métodos procuram criar esquemas de discretização da evolução Hamiltoniana de um sistema conservativo, de modo que o volume de pontos representativos no espaço de fase seja preservado durante a evolução temporal. Estes esquemas envolvem fatorização do operador Liouvilleano.

  1. Use o método de Euler-Cromer e o método de Euler com passo Graph e Graph para resolver numericamente o problema do pêndulo simples na aproximação de pequenas oscilações. Ulitize a condição inicial Graph e Graph. Faça um gráfico contendo a evolução temporal da posição angular por aproximadamente 10 períodos do movimento para a solução analítica e numérica com os métodos de Euler e Euler-Cromer. Faça outro gráfico ilustrando a evolução temporal da energia no mesmo alcance temporal para as 3 soluções.

Lista 3: Caos em sistemas dissipativos: o pêndulo forçado-amortecido -14/09/2010

Nesta sequência de problemas utilize o método de Runge-Kutta de quarta ordem com passo Graph

Considere o pêndulo simples em um meio viscoso, que oferece resistência ao seu movimento com uma força proporcional à sua velocidade Graph. A equação de movimento pode ser escrita como Graph.

  1. Faça o gráfico da posição como função do tempo para Graph e Graph com posição angular inicial Graph e Graph. Note que para valores grandes de q devemos recuperar o movimento sem dissipação (conservativo) e, portanto, devemos utilizar um método simplético, como Verlet ou Euler-Cromer, para integrar a equação de movimento.

Considere agora uma força periódica impulsionando o pêndulo com força Graph. A equação de movimento pode ser escrita como Graph.

  1. Construa o gráfico Graph com Graph e Graph e Graph, respectivamente. Observe a mudança de comportamento ao variarmos a amplitude A da força externa. Simule o pêndulo por 100 ciclos da força externa e despreze os primeiros 10 ciclos (quanto vale o período Graph da força externa neste exemplo?).
  2. Construa o espaço de fases para cada uma das situações descritas acima com a evolução do ponto representativo
  3. Faça um gráfico “estroboscópico”, chamado seção de Poincaré, imprimindo os pontos no espaço de fase correspondentes a intervalos de tempo múltiplos do período Graph da força externa Graph.
  4. Obtenha uma série de pontos Graph onde Graph corresponde ao valor da velocidade angular quando Graph vale zero pela n-ésima vez durante a evolução temporal do pêndulo. Despreze os valores obtidos para tempos menores que 10 ciclos da força externa. Construa agora outra seção de Poincaré em um gráfico Graph para os mesmos parâmetros do problema anterior.

O pêndulo descrito acima deve apresentar comportamentos distintos para diferentes parâmetros. Em particular, para Graph e Graph, obtemos comportamento caótico para alguns valores da amplitude da força externa A. Verifique!

Amplitude da força Comportamento
A < 1.085 periódico
1.085 < A < 1.11 caótico
1.11 < A < 1.14 periódico
1.14 < A < 1.22 caótico
A ~ 1.22 periódico
1.22 < A < 1.28 caótico
1.28 < A < 1.475 periódico
1.475 < A < 1.485 caótico
1.485 < A < 1.493 periódico
1.493 < A < 1.495 caótico
1.495 < A < 1.497 periódico

Lista 4: Caos no mapa logístico - 23/09/2010

Leia aqui sobre o problema.

Considere o mapa logístico Graph

  1. Faça os gráficos (escala lin-log) da evolução temporal de x a partir de um valor inicial arbitrário para Graph e Graph.
  2. Fazer “gráficos de escada” para os mesmos valores de parâmetro e condição incial x=0.6. Como critério de parada use a condição Graph.
  3. Fazer “gráficos de escada” para o caso Graph e condição inicial x=0.3 e para a segunda iterada f(f(x)) com mesma condição inicial.
  4. Construir o diagrama de bifurcação do mapa logístico na região Graph.
  5. Obter os expoentes de Lyapunov Graph do mapa logístico na região Graph.

O mapa logístico com Graph é ergódico, o que significa que podemos substituir médias temporais por médias sobre configurações de um ensemble e, nesse caso, Graph onde Graph é a fração de vezes que a órbita se encontra entre x e x+dx.

  1. Calcule, subdividindo o intervalo [0,1] em 100 subintervalos, o histograma Graph para as primeiras 100000 iterações do mapa logístico com Graph e encontre Graph. Esse caso particular admite a solução analítica Graph. Compare os resultados mostrando-os em um mesmo gráfico.
  2. Obter o diagrama de bifurcação para os mapas

(a) Graph

(b) Graph

ambos na região Graph

Lista 5: Análise de séries temporais - 19/10/2010

  1. Voce encontra neste arquivo a sequência dos primeiros 10 mil dígitos de Graph.
  • Calcular a frequência P(i) de ocorrência de cada dígito i na sequência.
  • Calcular a frequência P(i,j) de ocorrência consecutiva de cada par de dígitos (i,j) na primeira metade da sequência. Utilize essa informação para adivinhar, na segunda metade da sequência, qual o dígito j seguinte a um dado dígito i da sequência. Qual a sua frequência de acertos? Como ela se compara com a probabilidade medida na primeira metade?
  1. A função de correlação Graph é uma das ferramentas tradicionais de análise de sinais. Ela mede o grau de correlação entre o valor do sinal medido em um instante e outro sinal medido em um instante de tempo subsequente. Note que, em sinais não estacionários, a função de correlação pode depender do instante inicial da medida Graph. Não trataremos desses casos aqui.
  2. Calcule a função de correlação para uma série de 10000 pontos obtidos com a evolução do mapa logístico com Graph (ponto de acumulação, infinitas órbitas periódicas instáveis emergem neste ponto), Graph, Graph (transição caos-ordem em uma janela de período 3) e Graph (ergodicidade comprovada para esse valor de parâmetro).

Lista 6: Automata celulares - 11/11/2010

Para ler sobre automata celulares:
http://mathworld.wolfram.com/ElementaryCellularAutomaton.html
http://classes.yale.edu/fractals/CA/welcome.html

  1. Desenvolva um código para ilustrar a evolução da regra 90 utilizando somente operações lógicas e um bit para cada sítio do sistema, implementando um sistema de 32 ou 64 bits (dependendo do tamanho da palavra no computador utilizado). Implemente condições de contorno periódicas e livres e condição inicial com um bit central 1 e todos os outros 0.
  2. Desenvolva um código para receber uma dada regra de Wolfram como parâmetro de entrada e retornar a evolução temporal de uma condição inicial por T passos de tempo em um sistema com N sítios. Utilize uma palavra de computador por sítio. Mostre graficamente as evoluções temporais para as regras 30, 60, 90, 102, 126 e 150 com N=T=200. Utilize como condição inicial um único sítio (central) com estado s=1 e todos os outros com s=0 e implemente condições de contorno periódicas (s[N]=s[0]) e livres (s[N]=s[-1]=0);
  3. Para a regra 30, escolha um sítio e acompanhe sua evolução temporal 0,1,0,0,1,….
  • Calcule o número médio de bits 1 ao longo da evolução com N=10000 e T=100, 1000, 10000 e 100000.
  • Calcule a função de correlação Graph
  • Agrupe os bits na evolução em blocos de 8 bits. Transforme o bloco em um inteiro com sinal. Calcule o valor médio do número obtido. Calcule a função de correlação para a série gerada com tal procedimento. Faça um gráfico com a evolução temporal dos números de 8 bits. Para lembrar da representação de inteiros com sinal leia:

http://www.cs.cornell.edu/~tomf/notes/cps104/twoscomp.html
http://en.wikipedia.org/wiki/Two's_complement

Lista 7: Números pseudo-aleatórios e Monte-Carlo- 23/11/2010

Números gerados com o computador, uma máquina de Turing determinística, não pode gerar aleatoriedade com seus elementos lógicos. Podemos, no máximo, gerar sequências de números que passem por determinados testes estatísticos de aleatoriedade. A estes números chamamos pseudo-aleatórios e sua obtenção depende crucialmente do aumento de entropia gerado pela perda de bits (informação) nas operações lógicas - para os mais interessados: http://www.springerlink.com/content/jn7x3365386phn46/

Existem geradores de números verdadeiramente aleatórios, baseados na estocasticidade de processos físicos como emissão de fótons em processos radiativos ou espalhamento em divisores de feixes (veja aqui um exemplo). Esses geradores são usados para operações críticas, como criptografia e bingo.

Uma boa fonte de informações a respeito de números pseudo-aleatórios é a biblioteca GSL, que possui, dentre diversas outras aplicações científicas como cálculo de autovalores e solução de sistemas de equações lineares, rotinas que geram números pseudo-aleatórios com diversas receitas. http://www.gnu.org/software/gsl/manual/html_node/Random-Number-Generation.html

  1. Usando o gerador congruencial x=(x*A)mod(B) gere pontos em um espaço 2D e visualize seu resultado. Utilize A=16807 e 65539 e B=2147483648. Estes números podem ser gerados sem a operação mod com números inteiros de 32 bits com sinal. Visualize seus resultados normalizando o número aleatório para gerar pontos com alcance [-1…1]
  2. Usando o mesmo gerador com A=16807 e 65539, crie pontos em um espaço 3D. Visualize seus resultados e, girando a figura no gnuplot, tente visualizar a regularidade nos pontos gerados com 65539. Em 2D, visualize x versus 9x-6y+z onde x,y,z são a trinca de números aleatórios correspondente a um ponto no espaço 3D. Veja como o gerador 65539 é ruim para amostrar pontos no espaço.
  3. Gere Graph pares de pontos (x,y) aleatoriamente distribuídos em 2D (com x e y entre -1 e 1). Calcule a fração de números gerados que satisfazem Graph . Essa razão deve ser aproximadamente a razao entre a área de um círculo de raio unitário e um quadrado de lado 2. Esta razão vale Graph. Multiplique sua fração de números por 4 e voce terá calculado pi pelo Método de Monte Carlo. Faça um gráfico mostrando a convergência do valor estimado com o método de Monte Carlo para o valor aproximado de 3.14159265358979323846 (por exemplo, mostre no gráfico a diferença entre o valor aproximado e o valor estimado) utilizando o gerador com A=16807 e compare o resultado obtido com o gerador A=65539. Quantos números aleatórios devemos gerar para se obter Graph de precisão na sua estimativa com A=16807?
  4. Ruína do jogador: Considere dois jogadores, o primeiro com n1 moedas e o segundo com n2 moedas em um jogo de cara ou coroa. Cada vez que um jogador perde, ele entrega uma moeda para o outro jogador e o jogo se repete até um dos jogadores perder todo o dinheiro. Realize esse jogo um milhão de vezes e calcule a fração de vezes que cada jogador perdeu todo o dinheiro. Esse valor deve ser interpretado como a probabilidade Graph de cada jogador iir à falência. Compare seu resultado com os valores teóricos para as Graph e Graph. Para ler mais sobre o assunto clique aqui
 
start.txt · Última modificação: 2011/03/15 11:11 por admin     Voltar ao topo
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Design by Chirripó